package cn.itcast.order.web.ijpay.ijpayconfig;

import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;

/**
 * @author sxt
 * @description 支付api配置
 */
public interface IJPayApiConfig<T> {

    /**
     * 向缓存中添加支付api配置
     *
     * @param config 支付api配置
     */
    void setApiConfig(T config);

    /**
     * 向ThreadLocal中保存一份支付api配置
     *
     * @param config 支付api配置
     */
    void setThreadLocalApiConfigConfig(T config);

    /**
     * 向ThreadLocal中保存一份支付api配置
     */
    void setThreadLocalApiConfigConfig();

    /**
     * 根据支付api配置id从缓存删除相应配置
     *
     * @param configId 支付api配置id
     */
    void removeApiConfig(Object configId);

    /**
     * 从ThreadLocal中移除支付api配置
     */
    void removeThreadLocalApiConfig();

    /**
     * 根据支付api配置id从缓存获取相应配置
     *
     * @param configId 支付api配置id
     * @return 支付api配置
     */
    T getApiConfig(Object configId);

    /**
     * 获取默认支持的支付api配置
     *
     * @return 默认支持的支付api配置
     */
    T getDefaultApiConfig();
}
